package cn.hcbycloud.common.permission.service.impl;

import cn.hcbycloud.auth.client.ExternalPermissionCheckClient;
import cn.hcbycloud.auth.dto.LoginInfoDTO;
import cn.hcbycloud.common.core.utils.ObjectUtils;
import cn.hcbycloud.common.jwt.vo.LoginInfo;
import cn.hcbycloud.common.permission.service.PermissionCheckService;
import lombok.AllArgsConstructor;

import java.util.List;

/**
 * @author gaoh
 * @desc 实现权限注解校验接口
 * @date 2022年02月02日 上午 12:34
 */
@AllArgsConstructor
public class PermissionCheckServiceImpl implements PermissionCheckService {
    /**
     * 认证中心暴露的feign接口
     */
    ExternalPermissionCheckClient externalPermissionCheckClient;

    /**
     * 调用认证中心权限验证接口获取认证用户权限列表
     *
     * @param loginInfo
     * @return
     */
    @Override
    public List<String> getPermissions(LoginInfo loginInfo) {
        LoginInfoDTO LoginInfoDTO = ObjectUtils.cloneObject(loginInfo, LoginInfoDTO.class);
        return externalPermissionCheckClient.getPermissionsByFeign(LoginInfoDTO);
    }

    /**
     * 调用认证中心权限验证接口获取认证用户角色列表
     *
     * @param loginInfo
     * @return
     */
    @Override
    public List<String> getRoles(LoginInfo loginInfo) {
        LoginInfoDTO LoginInfoDTO = ObjectUtils.cloneObject(loginInfo, LoginInfoDTO.class);
        return externalPermissionCheckClient.getRolesByFeign(LoginInfoDTO);
    }
}